/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package pessoas.presenter.stateContatoView;

import javax.swing.JOptionPane;
import pessoas.CommandContatoView.EditarCommand;
import pessoas.collection.Contatos;
import pessoas.dataHora.DataHora;
import pessoas.interfaces.ICommandContatoView;
import pessoas.mementoContato.Contato;
import pessoas.model.Usuario;
import pessoas.presenter.ContatoPresenter;
import pessoas.presenter.ContatoZelador;

/**
 *
 * @author Bush
 */
public class EdicaoState extends ManterContatoState {

    private DataHora dataHora;
    private Contato contato;
    private ICommandContatoView contatoCommand;
    private ContatoZelador contatoZelador;

    public EdicaoState(ContatoPresenter presenter, Contato contato) {
        super(presenter, contato);
        this.contato = contato;
        dataHora = new DataHora();
        this.contatoZelador = ContatoZelador.getInstancia();
        iniciandoView();
    }

    public void iniciandoView() {
        presenter.getView().getBtnSalvar().setText("Salvar");
        presenter.getView().getBtnFechar().setText("Cancelar");
        presenter.getView().getTxtNome().setText(contato.getNome());
        presenter.getView().getTxtSobrenome().setText(contato.getSobrenome());
        String tel = contato.getTelefone().substring(4, 8) + contato.getTelefone().substring(9);
        if (tel.length() == 8) {
            presenter.getView().getTxtTelefone().setValue(contato.getTelefone().substring(0, 4) + contato.getTelefone().substring(4));
        } else {
            presenter.getView().getTxtTelefone().setValue(contato.getTelefone().substring(0, 4) + contato.getTelefone().substring(5));
        }
        presenter.getView().getComboUf().setSelectedItem(contato.getUf());
        presenter.getView().getComboOper().setSelectedItem(contato.getOperadora());
        presenter.getView().getBtnNovo().setVisible(false);

        presenter.getView().getTxtNome().setEditable(true);
        presenter.getView().getTxtSobrenome().setEditable(true);
        presenter.getView().getTxtTelefone().setEditable(true);

        presenter.funcaoBtnSalvarEditar(true);// troca função do Botão para Edição
        presenter.pegaContatoView();
    }

    @Override
    public void salvar(Usuario usuario, Contatos contatos) {
    }

    @Override
    public void editar(Usuario usuario, Contatos contatos, Contato contato) {
        contatoCommand = new EditarCommand(presenter, contatos, usuario, contato);
        contatoCommand.exercutar();
    }

    @Override
    public void novo() {

    }

    @Override
    public void fechar() {
        //Chamar mementoContato para voltar ao estado anterior
        presenter.getView().dispose();
    }

    @Override
    public void cancelar() {
        try {
            this.contato.restaurarContato(contatoZelador.getUltimoEstadoSalvo());
            presenter.setEstado(new VisualizacaoState(presenter, contato));
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }
    }

}
